#ifndef _HASH_H_
#define _HASH_H_

#include "common.h"

#define HASH_SIZE 100

typedef struct UserInfo
{
	int 	iFd;
	char  	strDeviceID[8];
	long 	lTime;
} data_t;

typedef struct Node
{
	data_t data;
	struct Node *pNext;
} Node;

typedef struct Hash
{
	Node *table[HASH_SIZE];
} Hash;

extern Hash *g_pHash;

Hash *CreateHash();
void DestroyHash(Hash *pHash);
int InsertItem(Hash *pHash, data_t stInfo);
int DeleteItem(Hash *pHash, data_t tData);
int UpdateItem(Hash *pHash, data_t tData);
int FindDevice(Hash *pHash, data_t tData, int *pOldFd);
void ShowHash(Hash *pHash);
int DeleteTimeOutDevFromHash(Hash *pHash, fd_set *pSet, int iMax);
int FindFdFromHash(Hash *pHash, char *dev_id);
int FindFdFromHash(Hash *pHash, char *dev_id);
#endif //_HASH_H_
